package com.yoomiito.app.utils;

import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *  限制只能输入数字 并可以设置最大值
 */
public class NumInputFilter implements InputFilter{
    Pattern mPattern;
    private NumResultListener mNumResultListener;

    private int maxNUm = 50;
    public NumInputFilter() {
        mPattern = Pattern.compile("([0-9])*");
    }

    /**
     * @param source    新输入的字符串
     * @param start     新输入的字符串起始下标，一般为0
     * @param end       新输入的字符串终点下标，一般为source长度-1
     * @param dest      输入之前文本框内容
     * @param dstart    原内容起始坐标，一般为0
     * @param dend      原内容终点坐标，一般为dest长度-1
     * @return          输入内容
     */
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        String sourceText = source.toString();
        String destText = dest.toString();

        //如果新输入的字符串为空 return ""
        if (TextUtils.isEmpty(sourceText)) {
            return "";
        }

        Matcher matcher = mPattern.matcher(source);
        if (!matcher.matches()) {
            return "";
        }

        if (TextUtils.isEmpty(destText)&&sourceText.equals("0")){
            if (mNumResultListener!=null)mNumResultListener.onResult("购买数量不能小于1");
            return "";
        }

        if (Integer.valueOf(destText+sourceText)>50){
            if (mNumResultListener!=null)mNumResultListener.onResult("购买数量不能大于50");
            return "";
        }
        return sourceText;
    }

    public NumInputFilter setMaxNum(int maxNum) {
        this.maxNUm = maxNum;
        return this;
    }

    public void addNumResultListener(NumResultListener numResultListener) {
        mNumResultListener = numResultListener;
    }

    public interface NumResultListener{
        void onResult(String result);
    }
}
